package cn.lili.modules.order.cart.render.impl;

import cn.lili.modules.goods.client.GoodsClient;
import cn.lili.modules.goods.client.GoodsSkuClient;
import cn.lili.modules.goods.entity.dos.GoodsSku;
import cn.lili.modules.goods.entity.enums.GoodsAuthEnum;
import cn.lili.modules.goods.entity.enums.GoodsMarketEnum;
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
import cn.lili.modules.order.cart.entity.enums.RenderStepEnums;
import cn.lili.modules.order.cart.entity.vo.CartSkuVO;
import cn.lili.modules.order.cart.entity.vo.CartVO;
import cn.lili.modules.order.cart.render.CartRenderStep;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 渲染套餐商品
 */
@Service
@RequiredArgsConstructor
@Slf4j
public class MealGoodsRender implements CartRenderStep {

    private final GoodsSkuClient goodsSkuClient;

    @Override
    public RenderStepEnums step() {
        return RenderStepEnums.MEAL_GOODS;
    }

    @Override
    public void render(TradeDTO tradeDTO) {
        // 获取sku列表
        List<CartSkuVO> cartSkuVOList = tradeDTO.getSkuList();
        if (!cartSkuVOList.isEmpty()) {
            List<String> storeIds = cartSkuVOList.stream().map(cartSkuVO -> cartSkuVO.getGoodsSku().getStoreId()).toList();
            // 获取店铺套餐商品规格列表
            List<GoodsSku> goodsSkuList = goodsSkuClient.getGoodsSkuByStoreIds(storeIds);
            if (!goodsSkuList.isEmpty()) {
                tradeDTO.setMealSkuList(goodsSkuList);
            }
        }

        List<CartVO> cartVOList = tradeDTO.getCartList();
        if (!cartVOList.isEmpty()) {
            cartVOList.forEach(cartVO -> {
                List<CartSkuVO> cartSkuVOS = cartVO.getSkuList();
                CartSkuVO cartSkuVO = cartSkuVOS.stream().filter(i -> i.getNum() == 0).findFirst().orElse(null);
                cartSkuVOS.remove(cartSkuVO);
                cartVO.getCheckedSkuList();
            });
        }
    }
}
